import { defineStore } from 'pinia'

interface IForm {
  // 重命名方式
  importRenameMethod: '0' | '1'
}

interface IFileRenameExcelStore {
  form: IForm
  orderExcelData: IExcelInitialData
  matchExcelData: IExcelInitialData
}

function initExcelInitialData(): IExcelInitialData {
  return {
    // 文件名称
    excelFileName: undefined,
    // 文件路径(不包括文件名)
    path: undefined,
    // 完整路径(包括文件名)
    fullPath: undefined,
    // 文件内容
    excelFileContent: []
  }
}

const useFileRenameExcelStore = defineStore('fileRenameExcelStore', {
  state(): IFileRenameExcelStore {
    return {
      // 表单数据
      form: {
        importRenameMethod: '0'
      },
      // 按顺序重命名 Excel 数据
      orderExcelData: initExcelInitialData(),
      // 自动匹配重命名 Excel 数据
      matchExcelData: initExcelInitialData()
    }
  },
  actions: {
    getExcelInitialData() {
      if (this.form.importRenameMethod === '0') {
        return this.orderExcelData
      } else {
        return this.matchExcelData
      }
    },
    setExcelInitialData(preload: IExcelInitialData) {
      if (this.form.importRenameMethod === '0') {
        Object.assign(this.orderExcelData, preload)
      } else {
        Object.assign(this.matchExcelData, preload)
      }
    },
    // 重置当前重命名方式对应的 Excel 数据
    resetCurMethodData() {
      if (this.form.importRenameMethod === '0') {
        Object.assign(this.orderExcelData, initExcelInitialData())
      } else {
        Object.assign(this.matchExcelData, initExcelInitialData())
      }
    }
  }
})

export default useFileRenameExcelStore
